A software user may sometimes receive one or more updates for the software during its lifetime. These updates may be new versions of the software that the user has purchased or to which the user is entitled based on the user's initial purchase terms. In some cases the updates may address a problem with the software and in some cases the updates may be provided at no charge by the manufacturer/distributor of the software.
Although a user may receive updates in the form a CD (or equivalent) that the manufacturer/distributor sends to the user, in many cases it is preferable to use the Internet (or perhaps another communication network) to provide updates to users to avoid the cost of making and distributing CD's. The manufacturer/distributor may provide the updates on its Web site. In instances where not all users are entitled to the update (e.g., a new version that users must purchase), the manufacturer may take steps to restrict access to the updates to only authorized users (e.g., users that have paid).
One difficulty with using the Web to distribute updates is that many software programs are relatively large so that transmission of the entire software (program to all users (or even an appreciable subset of users) is impractical or at least undesirable. In addition, in instances where a user may be updating only a small portion of the software, transmitting the entirety of a version thereof may be redundant.
One technique that addresses these issues is delta compression, where a user is sent data indicative of the differences between an initial version of the software that the user already has and the new version of the software. The user uses the delta compression data and the initial version of the software to construct the new (updated) version of the software. The delta compression data may be constructed by the manufacturer/distributor of the software by concatenating the new version of the software on to the old version of the software and then using a target pointer to traverse through the new version of the software to determine which data is unique and which data matches data that is prior to the target pointer. The location of matching data, relative to the target pointer, is encoded into the delta compression data. However, since it is expected that data in the new version of the software will match data in the initial version, the distance between the target pointer and the matching data (expressed, for example, in a number of bytes or bits between the two) may be relatively large, and thus require a relatively large number of bits for encoding. This large number of bits diminishes the beneficial effects of delta compression encoding.
It is desirable to provide a system that takes advantage of the reductions in data size afforded by delta compression encoding without the disadvantages of the detriments discussed above.